import java.util.Random;

public class Covenant {

	private static final int DEFAULT_VIDA = 20;
	private static final int DEFAULT_EXP = 20;
	private static final int DEFAULT_FUERZA = 20;
	
	public static int numCovenants;

	private String nombre;
	private int maxVida;
	private int vida;
	private int fuerza;
	private int experiencia;

	private static Random rnd = new Random();

	public Covenant(String nombre) {
		this(nombre, DEFAULT_VIDA, DEFAULT_FUERZA, DEFAULT_EXP);
	}

	public Covenant(String nombre, int maxVida, int fuerza, int experiencia) {
		super();
		this.nombre = nombre;
		this.maxVida = maxVida;
		this.vida = maxVida;
		this.fuerza = fuerza;
		this.experiencia = experiencia;
		
		numCovenants++;
	}

	public boolean isInconsciente() {
		return vida >= 0 && vida < 0.1 * maxVida;
	}

	public boolean isMuerto() {
		return vida < 0;
	}

	public void ataca(Spartan s) {

		if (!isMuerto() && !isInconsciente()) {
			int ataque = rnd.nextInt(fuerza) + experiencia;
			s.esAtacado(this, ataque);
		}
	}

	public void esAtacado(Spartan s, int ataque) {

		int valorAtaque = rnd.nextInt(100);
		int valorDefensa = rnd.nextInt(experiencia);

		if (valorAtaque > valorDefensa)
			vida -= ataque;
		
		if (vida < 0)
			numCovenants--;
	}

	public void reanimar() {
		if (!isMuerto() && isInconsciente())
			vida = (int) (0.7 * maxVida);
	}

	public void saluda() {
		System.out.println(nombre + " PRESENTE!!");
	}
}
